#!/usr/bin/php


<?php

use VDB\Spider\Discoverer\XPathExpressionDiscoverer;
use Symfony\Component\EventDispatcher\Event;
use VDB\Spider\Event\SpiderEvents;
use VDB\Spider\StatsHandler;
//use VDB\Spider\RequestHandler\GuzzleRequestHandler;

//use VDB\Spider\Spider;

use  LDL\Twspider\Spider as Spider ;
// Create Spider
require __DIR__ . '/../../vendor/autoload.php';
$spider = new Spider('http://www.baidu.com');
// Add a URI discoverer. Without it, the spider does nothing. In this case, we want <a> tags from a certain <div>
$spider->start();

$spider->getDiscovererSet()->set(new XPathExpressionDiscoverer("//a"));
// Set some sane options for this example. In this case, we only get the first 10 items from the start page.
$spider->getDiscovererSet()->maxDepth = 1;
$spider->getQueueManager()->maxQueueSize = 10;

// Let's add something to enable us to stop the script
function tta(Event $event) {
        echo "\nCrawl aborted by user.\n";
	exit(); 
};

function aa(){
	$a="xxx";
	echo "qweqw\n";
	return function() use($a){
		echo "嘻嘻{$a}嘻嘻";
	};
};
//aa()();
$spider->getDispatcher()->addListener(
    SpiderEvents::SPIDER_CRAWL_USER_STOPPED,"tta"
);

// Add a listener to collect stats to the Spider and the QueueMananger.
// There are more components that dispatch events you can use.
$statsHandler = new StatsHandler();
$spider->getQueueManager()->getDispatcher()->addSubscriber($statsHandler);
$spider->getDispatcher()->addSubscriber($statsHandler);
// Execute crawl
//$spider->getDownloader()->getPersistenceHandler();
$spider->crawl();



exit;
// Build a report
echo "\n  ENQUEUED:  " . count($statsHandler->getQueued());
echo "\n  SKIPPED:   " . count($statsHandler->getFiltered());
echo "\n  FAILED:    " . count($statsHandler->getFailed());
echo "\n  PERSISTED:    " . count($statsHandler->getPersisted());

// Finally we could do some processing on the downloaded resources
// In this example, we will echo the title of all resources
echo "\n\nDOWNLOADED RESOURCES: ";
$spider->join();

foreach ($spider->getDownloader()->getPersistenceHandler() as $resource) {
    echo "\n - " . $resource->getCrawler()->filterXpath('//title')->text();
}
//$spider->join();
